<?php

function ordenaPontuacao($obj1, $obj2){
        if ($obj1->pontuacao < $obj2->pontuacao) {
            return 1;
        } elseif ($obj1->pontuacao > $obj2->pontuacao) {
            return -1;
        }
        return 0;
    }

class Pessoa extends CI_Controller{
    
    function index (){
        $this->estaLogado();
        redirect('pessoa/listarMembros');
    }
    
    function estaLogado(){
	$id = $this->session->userdata('pessoa_id');
	if(empty($id)){
            redirect('pessoa/login');
	}else{
            $this->temAvaliacoes($id);
        }
    }
    
    function temAvaliacoes($id){
        $this->load->model('pessoaModel');
        $aval = $this->pessoaModel->temAvaliacoes($id);
        $this->session->set_userdata('avaliacoes', $aval);
        return true;
    }
    
    function login(){
        $this->load->view('pessoa/login');
    }
    
    function definePermissao($dir, $cargo){
        if(($cargo == 8) && ($dir == 3)){
            return 5; //Diretor de RH
        } else{
            return 0; //Consultor comum
        }
    }
    
    function completaLogin(){
        $this->load->model('pessoaModel');
       
        // Pega os dados inseridos nos inputs da tela de login
        $login = $this->input->post('login');
        $senha = md5($this->input->post('senha')); // A senha já é criptografada para MD5 aqui
        
        if(!$this->pessoaModel->testaLogin($login)){ //testa se o LOGIN é existente
            $this->session->set_userdata('erro', 'Esse login não é existente');            
            redirect('pessoa/login');
        } else {
            $usuario = $this->pessoaModel->testaSenha($login, $senha); //se o Login existe, vê se a senha existiu
            if(!$usuario){
                $this->session->set_userdata('erro', 'A senha está incorreta');
                redirect('pessoa/login');
            } else {
                $this->session->set_userdata('pessoa_id', $usuario->id);
                $this->session->set_userdata('nome', $usuario->nome_membro);
                $this->session->set_userdata('diretoria_id', $usuario->Diretoria_id);
                $this->session->set_userdata('nucleo_id', $usuario->Nucleo_id);
                $this->session->set_userdata('permissao', $this->definePermissao($usuario->Diretoria_id, $usuario->cargo_id));
                $this->temAvaliacoes($usuario->id);
                
                //echo var_dump($usuario);
                //echo $this->session->userdata('permissao'); die();
                redirect('pessoa/pontosMembro');
            }
        }
    }
    
    function logout(){
        $this->session->sess_destroy();
        redirect('pessoa/login');
    }
    
    function pontosMembro(){
        $this->estaLogado();
        $this->load->model('pessoaModel');
        $dados['temPositivos'] = 0;
        $submenu = array( 
            0 => array('nome' => 'Meus Pontos', 'link' => 'pessoa/pontosMembro'),
            1 => array('nome' => 'Avaliações', 'link' => 'avaliacao/avaliacoesMembroFazer'),
            2 => array('nome' => 'Minha Diretoria', 'link' => 'diretoria/listarMembrosDiretoria')
        );
        $id = $this->session->userdata('pessoa_id');
        
        $dados['submenu'] = $submenu;
        $dados['positivos'] = $this->pessoaModel->getPontosPositivos($id);
        if(($dados['positivos']['cases']) || ($dados['positivos']['voluntariado']))
            $dados['temPositivos'] = 1;
        //echo var_dump($dados);
        $dados['negativos'] = $this->pessoaModel->getPontosNegativos($id);
        
        $this->load->view('pessoa/pontosMembro', $dados);
    }
    
    function cadastrarMembro(){
        $this->load->model('pessoaModel');
        $this->load->model('apoioModel');
        $this->load->model('nucleoModel');
        
        $dados['cargos'] = $this->apoioModel->dropCargo();
        $dados['diretoria'] = $this->apoioModel->dropDiretoria();
        $dados['nucleo'] = $this->nucleoModel->dropNucleos();
        
        $this->load->view("pessoa/cadastrarMembro",$dados);
    }
    
    function cadastrandoMembro(){
        $this->load->model('pessoaModel');
        $this->load->model('apoioModel');
        
        $dados['nome_membro'] = $this->input->post('nome');
        $dados['login'] = $this->input->post('usuario');
        $dados['senha'] = $this->input->post('senha');
        $dados['email'] = $this->input->post('email');
        $dados['Diretoria_id'] = $this->input->post('diretoria');
        $dados['cargo_id'] = $this->input->post('cargo');
        $dados['Nucleo_id'] = $this->input->post('nucleo');
        
        $add['membro_id'] = $this->pessoaModel->cadastrarPessoa($dados);
        
        $cargos = $this->input->post('cargos');
        $mejs = $this->input->post('mejs');
        $cont = count($cargos);
        for($i = 0; $i < $cont; $i++){
            $add['cargo_id'] = $this->apoioModel->getIdCargoMej($cargos[$i], $mejs[$i]);
            $this->pessoaModel->adicionarMembroNoCargo($add);
        }
        
        redirect('pessoa/listarMembros');
    }
    
    function editarMembro(){
        $this->load->model('pessoaModel');
        $this->load->model('apoioModel');
        $this->load->model('nucleoModel');
        $id = $this->uri->segment(3);
        
        $dados['cargos'] = $this->apoioModel->dropCargo();
        $dados['diretoria'] = $this->apoioModel->dropDiretoria();
        $dados['nucleo'] = $this->nucleoModel->dropNucleos();
        $dados['membro'] = $this->pessoaModel->getMembro($id);
        $dados['mejs'] = $this->pessoaModel->getCargosMembro($dados['membro']->id);
        
        $this->load->view('pessoa/editarMembro', $dados);
    }
    
    function editandoMembro(){
        $this->load->model('pessoaModel');
        
        $dados['id'] = $this->input->post('id');
        $dados['nome_membro'] = $this->input->post('nome');
        $dados['email'] = $this->input->post('email');
        $dados['Diretoria_id'] = $this->input->post('diretoria');
        $dados['cargo_id'] = $this->input->post('cargo');
        $dados['Nucleo_id'] = $this->input->post('nucleo');
        $dados['login'] = $this->input->post('login');
        $senha = $this->input->post('senha');
        if($senha != null)
            $dados['senha'] = md5($senha);
        
        $this->pessoaModel->editarMembro($dados);
        
        redirect('pessoa/listarMembros');
    }
    
    function excluirMembro(){
        $this->load->model('pessoaModel');
        $id = $this->uri->segment(3);
        
        $this->pessoaModel->excluirMembro($id);
        return true;
    }
    
    function visualizarMembro(){
        $this->estaLogado();
        $this->load->model('pessoaModel');
        $id = $this->uri->segment(3);
        
        $dados['temPositivos'] = 0;
        $dados['membro'] = $this->pessoaModel->getMembro($id);
        $dados['membro']->diretoria = $this->pessoaModel->getDiretoriaMembro($dados['membro']->Diretoria_id);
        $dados['membro']->nucleo = $this->pessoaModel->getNucleoMembro($dados['membro']->Nucleo_id);
        $dados['membro']->cargo = $this->pessoaModel->getCargoMembro($dados['membro']->cargo_id);
        $dados['positivos'] = $this->pessoaModel->getPontosPositivos($id);
        if(($dados['positivos']['cases']) || ($dados['positivos']['voluntariado']))
            $dados['temPositivos'] = 1;
        $dados['negativos'] = $this->pessoaModel->getPontosNegativos($id);
        
        $this->load->view('pessoa/visualizarMembro', $dados);
    }
    
    function listarMembros(){
        $this->load->model('pessoaModel');
        $dados['membros'] = $this->pessoaModel->listarMembros();
        
        foreach ($dados['membros'] as $membro){
            $membro->diretoria = $this->pessoaModel->getDiretoriaMembro($membro->Diretoria_id);
            $membro->nucleo = $this->pessoaModel->getNucleoMembro($membro->Nucleo_id);
        }
        $this->load->view('pessoa/listarMembros',$dados);
    }
    
    function adicionarCase(){
        $this->load->model('casesModel');
        $dados['id'] = $this->session->userdata('pessoa_id');
        $dados['dropCases'] = $this->casesModel->dropCasesSemOMembro($dados['id']);
        
        $this->load->view('pessoa/adicionarNoCase', $dados);
    }    
    
    function ranking(){
        $this->estaLogado();
        $this->load->model('pessoaModel');
        
        $dados['membros'] = $this->pessoaModel->listarMembros();
        foreach($dados['membros'] as $membro){
            $positivos = $this->pessoaModel->getTotalPositivo($membro->id);
            $negativos = $this->pessoaModel->getTotalNegativo($membro->id);
            $membro->pontuacao = $positivos + $negativos;
        }
        
        usort($dados['membros'], 'ordenaPontuacao');
        
        $this->load->view('pessoa/ranking', $dados);
    }
    
    function relatorioMembro(){
        $this->estaLogado();
        $this->load->model('pessoaModel');
        $id = $this->uri->segment(3);
        
        $dados['temPositivos'] = 0;
        $dados['titulo'] = 'Relatório do Membro';
        $dados['membro'] = $this->pessoaModel->getMembro($id);
        $dados['membro']->diretoria = $this->pessoaModel->getDiretoriaMembro($dados['membro']->Diretoria_id);
        $dados['membro']->nucleo = $this->pessoaModel->getNucleoMembro($dados['membro']->Nucleo_id);
        $dados['membro']->cargo = $this->pessoaModel->getCargoMembro($dados['membro']->cargo_id);
        $dados['positivos'] = $this->pessoaModel->getPontosPositivos($id);
        if(($dados['positivos']['cases']) || ($dados['positivos']['voluntariado']))
            $dados['temPositivos'] = 1;
        $dados['negativos'] = $this->pessoaModel->getPontosNegativos($id);
        
        $this->load->library('mpdf');
        $this->mpdf->WriteHTML($this->load->view('pessoa/relatorioMembro', $dados, true));
        $this->mpdf->output('Relatorio-'.$dados['membro']->nome_membro, 'D');
    }
    
    function rankingPdf(){
        $this->estaLogado();
        $this->load->model('pessoaModel');
        
        $dados['titulo'] = 'Ranking de Pontuação dos Membros';
        $dados['membros'] = $this->pessoaModel->listarMembros();
        foreach($dados['membros'] as $membro){
            $positivos = $this->pessoaModel->getTotalPositivo($membro->id);
            $negativos = $this->pessoaModel->getTotalNegativo($membro->id);
            $membro->pontuacao = $positivos + $negativos;
        }
        
        usort($dados['membros'], 'ordenaPontuacao');
        
        $this->load->library('mpdf');
        $this->mpdf->WriteHTML($this->load->view('pessoa/rankingPdf', $dados, true));
        $this->mpdf->output('RankingPraxis_'.date('Y-m-d'), 'D');
        //$this->load->view('pessoa/rankingPdf', $dados);
    }
    
    function fecharCiclo(){
        $this->estaLogado();
        echo "oi";
    }
    
    function esqueceuSenha(){
        $this->load->view('pessoa/esqueceuSenha');
    }
    
    function novaSenha(){
        $this->load->model('pessoaModel');
        $email = $this->input->post('email');
        if($usuario = $this->pessoaModel->testaEmail($email)){
            $n1 = rand(0, 9);
            $n2 = rand(0, 9);
            $n3 = rand(0, 9);
            $n4 = rand(0, 9);
            $n5 = rand(0, 9);
            $senha = $n1.$n2.$n3.$n4.$n5;
            
            $msg = ('Olá '.$usuario->nome_membro.',\n\n
            sua nova senha é: '.$senha.'\nÉ aconselhável que você mude a mesma o quanto antes.\n\n
            -Sistema Praxis de Benefícios de Membros');
            
            mail($usuario->email, '[SISTEMA]Nova Senha', $msg);
            
            $dados['id'] = $usuario->id;
            $dados['senha'] = md5($senha);
            $this->pessoaModel->editarMembro($dados);
            $this->session->set_userdata('mensagem', 'Sua nova senha foi mandada para seu e-mail.');
        } else{
            $this->session->set_userdata('erro', 'Este e-mail não existe!');
        }
        redirect('pessoa/login');
    }
}
?>